package ag.script.project.standard.img;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ReUtil;
import cn.hutool.core.util.StrUtil;

import java.io.File;

import java.util.ArrayList;
import java.util.List;

public class PathScanner {

    /**
     * 扫描脚本文件存在的资源列表
     *
     * @param projectPath 项目路径
     * @return 代码中的路径列表
     */
    public static List<String> start(String projectPath) {
        List<String> pathList = new ArrayList<>();
        List<File> jsFiles = FileUtil.loopFiles(projectPath, pathname -> StrUtil.endWithAnyIgnoreCase(FileUtil.extName(pathname), "js"));
        for (File jsFile : jsFiles) {
            List<String> pathList_SingleCodeFile = getPathList(jsFile.getAbsolutePath());
            pathList.addAll(pathList_SingleCodeFile);
        }
        return pathList;
    }


    /**
     * 扫描脚本文件存在的资源列表
     *
     * @param codePath 脚本文件路径
     * @return 代码中的路径列表
     */
    public static List<String> getPathList(String codePath) {

        //sdcard/Pictures/创造与魔法/.res/蒸汽石/全部拾取.png
        //(1)扫描脚本文件存在的资源列表
        List<String> pathList = new ArrayList<>();
        List<String> codeList = ReUtil.findAllGroup1("\"([^\"]*)\"", FileUtil.readUtf8String(codePath));
        for (String codeLine : codeList) {
            if (StrUtil.containsAny(codeLine, "data/", "storage/", "sdcard/") && StrUtil.contains(codeLine, "/")) {
                pathList.add(codeLine);
            }
        }
        return pathList;
    }
}
